<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 伪数组定义：一个对象有length属性，其他属性都是非负整数，但不具备数组的方法（如foreach方法） 
    let fakeArray = {
        length: 6,
        1: 'hello',
        3: 'world',
        8: 'Jack'
    }
    console.log(Array.isArray(fakeArray)) // false 
    // Uncaught TypeError: fakeArray.forEach is not a function 
    // 伪数组不具有数组的方法 
    fakeArray.forEach(item => {
        console.log(item) 
    })
    
    // es6提供了Array.from()方法将伪数组转为数组 
    let arr1 = Array.from(fakeArray)
    /*
    0 ':' undefined
    1 ':' 'hello'
    2 ':' undefined
    3 ':' 'world'
    4 ':' undefined
    5 ':' undefined
    */
    arr1.forEach((item, idx, arr) => {
        console.log(idx, ':', item) 
    })

    /*
    es6的...扩展符方式不太好 
    let arr2 = [...fakeArray] // Uncaught TypeError: fakeArray is not iterable 
    arr2.forEach((item, idx, arr) => {
        console.log(idx, ':', item) 
    })
    */

</script>
</html>